home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -seriously_amiga- / shareware / programming / other / kaliosisquantrum / morb / init.s < prev    next >
Text File  |  1998-01-12  |  7KB  |  359 lines

  1. *
  2. * CdBSian Obviously Universal & Interactive Nonsense (COUIN)
  3. * (Absurdité CdBSienne Manifestement Universelle et Interactive)
  4. * ©1997-1998, CdBS Software (MORB)
  5. * Initialisation
  6. * $Id: Init.s 0.11 1997/12/14 19:59:38 MORB Exp MORB $
  7. *
  8.  
  9. Startup:
  10.      move.l    (AbsExecBase).w,a6
  11.      sub.l     a1,a1
  12.      CALL      FindTask
  13.      move.l    d0,a4
  14.      tst.l     pr_CLI(a4)
  15.      bne.s     _Init
  16.      lea       pr_MsgPort(a4),a0
  17.      CALL      WaitPort
  18.      lea       pr_MsgPort(a4),a0
  19.      CALL      GetMsg
  20.      move.l    d0,-(a7)
  21.      bsr.s     _Init
  22.      move.l    (AbsExecBase).w,a6
  23.      CALL      Forbid
  24.      move.l    (a7)+,a1
  25.      CALL      ReplyMsg
  26.      moveq     #0,d0
  27.      rts
  28.  
  29. _Init:
  30.      clr.l     pr_WindowPtr(a4)
  31.      move.l    (AbsExecBase).w,a6
  32.      lea       DosName(pc),a1
  33.      moveq     #39,d0
  34.      CALL      OpenLibrary
  35.      move.l    d0,Dos_Base
  36.      beq       CleanUp
  37.      lea       IntName(pc),a1
  38.      moveq     #39,d0
  39.      CALL      OpenLibrary
  40.      move.l    d0,Int_Base
  41.      beq       CleanUp
  42.      lea       GfxName,a1
  43.      moveq     #39,d0
  44.      CALL      OpenLibrary
  45.      move.l    d0,Gfx_Base
  46.      beq       CleanUp
  47.      lea       LowName,a1
  48.      moveq     #40,d0
  49.      CALL      OpenLibrary
  50.      move.l    d0,Low_Base
  51.      beq       CleanUp
  52.  
  53.      bsr       _OOInit
  54.      tst.l     d0
  55.      beq       CleanUp
  56.  
  57.      moveq     #0,d0
  58.      move.l    #512,d1
  59.      move.l    d1,d2
  60.      CALL      CreatePool
  61.      move.l    d0,_ObjMemPool
  62.      beq       CleanUp
  63.  
  64.      move.l    Dos_Base,a6
  65.      moveq     #DOS_EXALLCONTROL,d1
  66.      CALL      AllocDosObject
  67.      move.l    d0,FRExallCtrl
  68.      beq       CleanUp
  69.  
  70.      moveq     #DOS_FIB,d1
  71.      CALL      AllocDosObject
  72.      move.l    d0,FRFib
  73.      beq       CleanUp
  74.  
  75.      move.l    Low_Base,a6
  76.      moveq     #0,d0
  77.      pea       TAG_DONE
  78.      pea       SJA_TYPE_MOUSE
  79.      pea       SJA_Type
  80.      move.l    a7,a1
  81.      CALL      SetJoyPortAttrsA
  82.      lea       12(a7),a7
  83.      tst.l     d0
  84.      ;beq.s     CleanUp
  85.  
  86.      moveq     #0,d0
  87.      CALL      ReadJoyPort
  88.  
  89.      moveq     #1,d0
  90.      pea       TAG_DONE
  91.      pea       SJA_TYPE_JOYSTK
  92.      pea       SJA_Type
  93.      move.l    a7,a1
  94.      CALL      SetJoyPortAttrsA
  95.      lea       12(a7),a7
  96.      tst.l     d0
  97.      beq       CleanUp
  98.  
  99.      moveq     #1,d0
  100.      CALL      ReadJoyPort
  101.  
  102.      lea       _KeyBoardInt,a0
  103.      sub.l     a1,a1
  104.      CALL      AddKBInt
  105.      move.l    d0,KBIHandle
  106.      beq       CleanUp
  107.  
  108.      move.l    (AbsExecBase).w,a6
  109.  
  110.      move.l    #BufferSize+8,d0
  111.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  112.      CALL      AllocVec
  113.      move.l    d0,BpMem1
  114.      beq       CleanUp
  115.      addq.l    #8,d0
  116.      and.l     #$fffffff8,d0
  117.      move.l    d0,_Bitmap1
  118.  
  119.      move.l    #BufferSize+8,d0
  120.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  121.      CALL      AllocVec
  122.      move.l    d0,BpMem2
  123.      beq       CleanUp
  124.      addq.l    #8,d0
  125.      and.l     #$fffffff8,d0
  126.      move.l    d0,_Bitmap2
  127.  
  128.      move.l    #BufferSize+8,d0
  129.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  130.      CALL      AllocVec
  131.      move.l    d0,BpMem3
  132.      beq       CleanUp
  133.      addq.l    #8,d0
  134.      and.l     #$fffffff8,d0
  135.      move.l    d0,_Bitmap3
  136.  
  137.      move.l    #BufferSize+8,d0
  138.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  139.      CALL      AllocVec
  140.      move.l    d0,CBpMem
  141.      beq       CleanUp
  142.      addq.l    #8,d0
  143.      and.l     #$fffffff8,d0
  144.      move.l    d0,_ClearBitmap
  145.  
  146.      move.l    #BufferSize+8,d0
  147.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  148.      CALL      AllocVec
  149.      move.l    d0,BpMem4
  150.      beq       CleanUp
  151.      addq.l    #8,d0
  152.      and.l     #$fffffff8,d0
  153.      move.l    d0,_Bitmap4
  154.  
  155.      move.l    #BufferSize+8,d0
  156.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  157.      CALL      AllocVec
  158.      move.l    d0,BpMem5
  159.      beq       CleanUp
  160.      addq.l    #8,d0
  161.      and.l     #$fffffff8,d0
  162.      move.l    d0,_Bitmap5
  163.  
  164.      move.l    #BufferSize+8,d0
  165.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  166.      CALL      AllocVec
  167.      move.l    d0,BpMem6
  168.      beq       CleanUp
  169.      addq.l    #8,d0
  170.      and.l     #$fffffff8,d0
  171.      move.l    d0,_Bitmap6
  172.  
  173.      move.l    #BufferSize+8,d0
  174.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  175.      CALL      AllocVec
  176.      move.l    d0,CBpMem2
  177.      beq       CleanUp
  178.      addq.l    #8,d0
  179.      and.l     #$fffffff8,d0
  180.      move.l    d0,_ClearBitmap2
  181.  
  182.      move.l    #GuiBufferSize+8,d0
  183.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  184.      CALL      AllocVec
  185.      move.l    d0,_GuiBpMem
  186.      beq       CleanUp
  187.      addq.l    #8,d0
  188.      and.l     #$fffffff8,d0
  189.      move.l    d0,_GuiBitmap
  190.  
  191.      move.l    #GuiSelBufferSize+8,d0
  192.      move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  193.      CALL      AllocVec
  194.      move.l    d0,_GuiSelMem
  195.      beq.s     CleanUp
  196.      addq.l    #8,d0
  197.      and.l     #$fffffff8,d0
  198.      move.l    d0,_GuiSelBitmap
  199.  
  200.      move.l    Gfx_Base,a6
  201.      CALL      OwnBlitter
  202.      move.l    gb_ActiView(a6),d7
  203.      sub.l     a1,a1
  204.      CALL      LoadView
  205.  
  206.      move.l    (AbsExecBase).w,a6
  207.      ;CALL      Disable
  208.      CALL      SuperState
  209.      move.l    d0,_SStack
  210.      ;move.l    a7,_A7Save
  211.  
  212.      bsr       _Main
  213.  
  214. Couic:
  215.      move.l    (AbsExecBase).w,a6
  216.      move.l    _SStack,d0
  217.      CALL      UserState
  218.      ;CALL      Enable
  219.  
  220.      ;lea       _Main(pc),a5
  221.      ;CALL      Supervisor
  222.      move.l    Gfx_Base,a6
  223.      move.l    Int_Base,a1
  224.      lea       ib_ViewLord(a1),a1
  225.      CALL      LoadView
  226.      CALL      DisownBlitter
  227.      move.l    Int_Base,a6
  228.      CALL      RemakeDisplay
  229. CleanUp:
  230.      move.l    (AbsExecBase).w,a6
  231.  
  232.      move.l    _GuiSelMem,a1
  233.      CALL      FreeVec
  234.      move.l    _GuiBpMem,a1
  235.      CALL      FreeVec
  236.  
  237.      move.l    CBpMem2(pc),a1
  238.      CALL      FreeVec
  239.      move.l    BpMem6(pc),a1
  240.      CALL      FreeVec
  241.      move.l    BpMem5(pc),a1
  242.      CALL      FreeVec
  243.      move.l    BpMem4(pc),a1
  244.      CALL      FreeVec
  245.  
  246.      move.l    CBpMem(pc),a1
  247.      CALL      FreeVec
  248.      move.l    BpMem3(pc),a1
  249.      CALL      FreeVec
  250.      move.l    BpMem2(pc),a1
  251.      CALL      FreeVec
  252.      move.l    BpMem1(pc),a1
  253.      CALL      FreeVec
  254.  
  255.      move.l    Low_Base,a6
  256.      move.l    KBIHandle(pc),a1
  257.      CALL      RemKBInt
  258.  
  259.      moveq     #0,d0
  260.      pea       TAG_DONE
  261.      pea       0
  262.      pea       SJA_Reinitialize
  263.      move.l    a7,a1
  264.      CALL      SetJoyPortAttrsA
  265.      lea       12(a7),a7
  266.  
  267.      moveq     #1,d0
  268.      pea       TAG_DONE
  269.      pea       0
  270.      pea       SJA_Reinitialize
  271.      move.l    a7,a1
  272.      CALL      SetJoyPortAttrsA
  273.      lea       12(a7),a7
  274.  
  275.      move.l    Dos_Base,d0
  276.      beq.s     .NoDos
  277.      move.l    d0,a6
  278.  
  279.      move.l    FRFib,d2
  280.      beq.s     .NoFib
  281.      moveq     #DOS_FIB,d1
  282.      CALL      FreeDosObject
  283. .NoFib:
  284.  
  285.      move.l    FRExallCtrl,d2
  286.      beq.s     .NoDos
  287.      moveq     #DOS_EXALLCONTROL,d1
  288.      CALL      FreeDosObject
  289. .NoDos:
  290.  
  291.      move.l    (AbsExecBase).w,a6
  292.      move.l    _ObjMemPool(pc),d0
  293.      beq.s     .NoMemPool
  294.      move.l    d0,a0
  295.      CALL      DeletePool
  296. .NoMemPool:
  297.  
  298.      bsr       _OOCleanUp
  299.  
  300.      move.l    Low_Base,a1
  301.      CALL      CloseLibrary
  302.      move.l    Gfx_Base,a1
  303.      CALL      CloseLibrary
  304.      move.l    Int_Base,a1
  305.      CALL      CloseLibrary
  306.      move.l    Dos_Base,a1
  307.      CALL      CloseLibrary
  308.      moveq     #0,d0
  309.      rts
  310. _SStack:
  311.      ds.l      1
  312. Dos_Base:
  313.      ds.l      1
  314. Int_Base:
  315.      ds.l      1
  316. Gfx_Base:
  317.      ds.l      1
  318. Low_Base:
  319.      ds.l      1
  320. _ObjMemPool:
  321.      ds.l      1
  322. FRExallCtrl:
  323.      ds.l      1
  324. FRFib:
  325.      ds.l      1
  326. KBIHandle:
  327.      ds.l      1
  328. BpMem1:
  329.      ds.l      1
  330. BpMem2:
  331.      ds.l      1
  332. BpMem3:
  333.      ds.l      1
  334. CBpMem:
  335.      ds.l      1
  336. BpMem4:
  337.      ds.l      1
  338. BpMem5:
  339.      ds.l      1
  340. BpMem6:
  341.      ds.l      1
  342. CBpMem2:
  343.      ds.l      1
  344. DosName:
  345.      dc.b      "dos.library",0
  346. IntName:
  347.      dc.b      "intuition.library",0
  348. GfxName:
  349.      dc.b      "graphics.library",0
  350. LowName:
  351.      dc.b      "lowlevel.library",0
  352.      even
  353. _Gna:
  354.      dc.l      -1
  355. _Debug:
  356.      ds.l      2
  357. _Debug2:
  358.      ds.l      2
  359.